package com.zkt.subject.domain.service;

import com.zkt.subject.common.entity.PageResult;
import com.zkt.subject.domain.entity.SubjectUserScore;
import com.zkt.subject.infra.entity.SubjectInfoBO;

import java.util.List;

/**
 * @author 赵开泰
 * @program jc-club
 * @date 2024/10/5
 * @description 题目信息领域服务
 **/

public interface SubjectInfoDomainService {
	
	/**
	 * 新增题目
	 *
	 * @param subjectInfoBO 新增的题目数据
	 */
	void add(SubjectInfoBO subjectInfoBO);
	
	/**
	 * 修改题目
	 *
	 * @param subjectInfoBO 修改的题目数据
	 */
	void update(SubjectInfoBO subjectInfoBO);
	
	/**
	 * 删除题目
	 *
	 * @param subjectInfoBO 请求参数
	 */
	void delete(SubjectInfoBO subjectInfoBO);
	
	/**
	 * 分页查询题目列表
	 *
	 * @param subjectInfoBO 查询条件
	 * @return 查询结果
	 */
	PageResult<SubjectInfoBO> getSubjectPage(SubjectInfoBO subjectInfoBO);
	
	/**
	 * 查询题目详情
	 *
	 * @param subjectInfoBO 查询参数
	 * @return 题目详情
	 */
	SubjectInfoBO querySubjectInfo(SubjectInfoBO subjectInfoBO);
	
	/**
	 * 根据id批量查询题目详情
	 *
	 * @param subjectIds 题目id
	 * @return 题目详情
	 */
	List<SubjectInfoBO> querySubjectInfoByIds(List<Long> subjectIds);
	
	/**
	 * 根据标签id批量查询题目详情
	 *
	 * @param labelIds 标签id
	 * @return 题目详情
	 */
	List<SubjectInfoBO> querySubjectInfoByLabelIds(List<Long> labelIds);
	
	/**
	 * 提交题目
	 *
	 * @param subjectInfoBO 提交信息
	 * @return 得分
	 */
	SubjectUserScore submit(SubjectInfoBO subjectInfoBO);
}
